/* keep this in sync with size_allocate below */
for (list = tree_view->priv->columns, i = 0; list; list = list->next, i++)
{
- gint max_width, min_width;
- gint real_requested_width = 0;
-
column = list->data;
if (!gtk_tree_view_column_get_visible (column))
continue;
- real_requested_width = gtk_tree_view_get_real_requested_width_from_column (tree_view, column);
-
- tree_view->priv->width += real_requested_width;
+ tree_view->priv->width += _gtk_tree_view_column_request_width (column);
}
if (tree_view->priv->tree == NULL)
}
}
-static gint
-gtk_tree_view_get_real_requested_width_from_column (GtkTreeView *tree_view,
- GtkTreeViewColumn *column)
-{
- gint max_width, min_width;
- gint real_requested_width;
-
- if (_gtk_tree_view_column_get_use_resized_width (column))
- {
- real_requested_width = _gtk_tree_view_column_get_resized_width (column);
- }
- else if (gtk_tree_view_column_get_sizing (column) == GTK_TREE_VIEW_COLUMN_FIXED)
- {
- real_requested_width = gtk_tree_view_column_get_fixed_width (column);
- }
- else if (GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_HEADERS_VISIBLE))
- {
- GtkWidget *button = gtk_tree_view_column_get_button (column);
- gint button_request;
-
- gtk_widget_get_preferred_width (button, &button_request, NULL);
-
- real_requested_width = MAX (_gtk_tree_view_column_get_requested_width (column), button_request);
- }
- else
- {
- real_requested_width = _gtk_tree_view_column_get_requested_width (column);
- if (real_requested_width < 0)
- real_requested_width = 0;
- }
-
- min_width = gtk_tree_view_column_get_min_width (column);
- if (min_width != -1)
- real_requested_width = MAX (real_requested_width, min_width);
-
- max_width = gtk_tree_view_column_get_max_width (column);
- if (max_width != -1)
- real_requested_width = MIN (real_requested_width, max_width);
-
- return real_requested_width;
-}
-
/* GtkWidget::size_allocate helper */
static void
gtk_tree_view_size_allocate_columns (GtkWidget *widget,
if (!gtk_tree_view_column_get_visible (column))
continue;
- full_requested_width += gtk_tree_view_get_real_requested_width_from_column (tree_view, column);
+ full_requested_width += _gtk_tree_view_column_request_width (column);
if (gtk_tree_view_column_get_expand (column))
number_of_expand_columns++;
list != (rtl ? first_column->prev : last_column->next);
list = (rtl ? list->prev : list->next))
{
- GtkWidget *button;
- GdkWindow *window;
gint internal_column_width = 0;
gint old_width, column_width;
continue;
}
- column_width = gtk_tree_view_get_real_requested_width_from_column (tree_view, column);
+ column_width = _gtk_tree_view_column_request_width (column);
if (gtk_tree_view_column_get_expand (column))
{
return tree_column->priv->width;
}
+gint
+_gtk_tree_view_column_request_width (GtkTreeViewColumn *tree_column)
+{
+ GtkTreeViewColumnPrivate *priv;
+ gint real_requested_width;
+
+ priv = tree_column->priv;
+
+ if (priv->use_resized_width)
+ {
+ real_requested_width = priv->resized_width;
+ }
+ else if (priv->column_type == GTK_TREE_VIEW_COLUMN_FIXED)
+ {
+ real_requested_width = priv->fixed_width;
+ }
+ else if (gtk_tree_view_get_headers_visible (GTK_TREE_VIEW (priv->tree_view)))
+ {
+ gint button_request;
+
+ gtk_widget_get_preferred_width (priv->button, &button_request, NULL);
+ real_requested_width = MAX (priv->requested_width, button_request);
+ }
+ else
+ {
+ real_requested_width = priv->requested_width;
+ if (real_requested_width < 0)
+ real_requested_width = 0;
+ }
+
+ if (priv->min_width != -1)
+ real_requested_width = MAX (real_requested_width, priv->min_width);
+
+ if (priv->max_width != -1)
+ real_requested_width = MIN (real_requested_width, priv->max_width);
+
+ return real_requested_width;
+}
+
void
_gtk_tree_view_column_allocate (GtkTreeViewColumn *tree_column,
int x_offset,